README
Replication Materials for
Military Insubordination and International Coercion
Journal of Conflict Resolution

Authors: Muhib Rahman and Nazmus Sakib
Last Updated: December 2025

1. Overview

This repository contains all materials required to replicate the empirical analyses, figures, and tables in the paper Military Insubordination and International Coercion.

The replication package is structured to be transparent and easy to navigate. Most tables and figures are generated using Jupyter Notebook (.ipynb), and some use STATA (e.g., censored probit), and all analyses (except Figure 3) use a single primary dataset.

No output folders are included. Each notebook generates the corresponding table or figure when run. The tables are generated into a TeX file for each. The figures are generated directly into the Jupyter Notebook command file. 

2. Data Files

2.1 Primary Dataset

All tables and figures except Figure 3 use:

jcr_mutiny_conflict_data.dta

This is the primary dataset underlying the entire analysis.


2.2 Additional Files Required for Figure 3 (Map)

Figure 3 requires geographic files in addition to the main dataset:
World shapefile (e.g., Natural Earth administrative boundaries)
COW country code crosswalk file (e.g., cow_country_codes.csv)

These files must be downloaded separately if not included in the repository and stored locally by the replicator.

3. Code Structure

3.1 Analysis Format

All analyses are conducted in Jupyter Notebook (.ipynb) files using python.
Each notebook corresponds to a single table or figure from the paper.
Some models (e.g., censored probit) are implemented in Stata .do files due to limitations in Python.
Notebook names correspond precisely to the numbering used in the paper (Figure 3, Table A4 etc.). This modular structure ensures clarity and avoids long, monolithic code files.

4. File Path Instructions 

Each notebook contains a clearly marked section at the top that lists all required file paths, such as:

file_path = r"YOUR/PATH/jcr_mutiny_conflict_data.dta"
shape_path = r"YOUR/PATH/shapefile_directory/"      # Figure 3 only
cow_code_path = r"YOUR/PATH/cow_country_codes.csv"  # Figure 3 only


Replicators must update these paths based on the location of these files on their own computers. No additional code modifications are required.

5. Running the Replication

Step 1: Open the relevant notebook (.ipynb)
Use Jupyter Notebook or VS Code.

Step 2: Edit the file paths
Modify only the path variables at the top of the notebook and the end of notebook where the output paths are listed.

Step 3: Run all cells
Each notebook will:
Load the required data
Run all transformations and models
Produce the table or figure as shown in the paper
Tables and figures are displayed directly within the notebook output.

6. Software Requirements

Python:
Python 3.10 or newer
Required libraries (imported in each notebook):
pandas
statsmodels
numpy
matplotlib
seaborn
pyreadstat
geopandas (Figure 3 only)
and some more (added in the relevant code files)

STATA:
Used only for specific models where replication in Python is non-trivial.
Stata 14 or higher
.do files are included for these models.

7. Notes for Replicators

Notebooks are self-contained; each one runs independently.
Only the file paths need to be changed.
Appendix tables follow the numbering A1, A2, … exactly as in the paper.
Figure 3 may require additional shapefile downloads depending on availability.
No external output folders are included; outputs appear inside the notebook, or output files are generated when the codes are executed.

8. Contact

For any questions regarding these materials, please contact:
Muhib Rahman
Email: mrahman5@upenn.edu